/**
 *    66. 加一
 *  给定一个由 整数 组成的 非空 数组所表示的非负整数，在该数的基础上加一。
 *
 *  最高位数字存放在数组的首位， 数组中每个元素只存储单个数字。
 *
 *  你可以假设除了整数 0 之外，这个整数不会以零开头。
*/

func plusOne(digits []int) []int {
    carry:=1
    // 倒序遍历，尾数+1
    for i:=len(digits)-1;i>=0;i-- {
        digits[i]+=carry
        digits[i]%=10
        // 遍历过程中存在对10取模不等于零，终止遍历，返回结果
        if digits[i]!=0 {
            return digits
        }
        // 对10取模等于零,进位为1
        carry = 1
    }
    // 遍历结束，carry不等于0
    // 新建数组，长度为原数组的长度加一，使新数组的第零位为1
    res := []int{1}
    // 将原数组的数据依次拷贝到新数组中
    res = append(res, digits...)
    // 返回新数组
    return res
}